// createStore：方法 用来生成store实例对象 （new Vuex.Store()）
import { createStore } from 'vuex'
import cart from './modules/cart'
import user from './modules/user'
// 引入插件
import createPersistedstate from 'vuex-persistedstate'
import * as Cookies from 'js-cookie'

export default createStore({
  // 定义数据
  state: {
  },
  // 定义同步方法
  mutations: {
  },
  // 定义异步方法
  actions: {
  },
  // 模块化入口
  modules: {
    user,
    cart
  },
  // 插件选项
  plugins: [
    // 配置各种插件
    // 机制：只要你触发state数据的修改 就会自动完成同步到本地
    // mutation
    createPersistedstate({
      storage: {
        getItem: key => Cookies.get(key),
        setItem: (key, value) =>
          Cookies.set(key, value, { expires: 7 }),
        removeItem: key => Cookies.remove(key)
      },
      key: 'erabbit-client-pc-store', // key - value 可以自定义 将来用作存数据的key
      paths: ['user', 'cart'] // 想要把哪个模块的数据进行持久化 就把它的名称写过来
    })

  ]
})
